package main

import (
	"fmt"
	"time"
)

func main() {
	//fmt.Println(GetSum(10))
	//fmt.Println(f(10))
	timeIt(GetSum,10000000)
	timeIt(f,10000000)
}

/*1+2+...+n的和——循环实现*/
func GetSum(n int) (sum int) {
	for i:=1;i<n+1;i++{
		sum += i
	}
	return
}

/*1+2+...+n的和——递归实现*/
func f(n int) (sum int) {
	//终止条件：由递转归
	if n == 1{
		return 1
	}
	//自己调用自己
	return n + f(n-1)
}

/*
测试函数的执行时间
f = 要执行的函数，类型是func(int)int
arg = f的参数
*/
func timeIt(f func(int)int,arg int){
	//记录开始时间
	startTime := time.Now()

	//调用f函数，丢入其参数arg
	f(arg)

	//记录结束时间
	endTime := time.Now()

	//求出endTime和startTime的时间差——函数f的执行时间
	fmt.Println("执行耗时=",endTime.Sub(startTime))
}
